﻿using System;
using System.Linq;
using System.Text;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using System.ComponentModel;
using DevExpress.ExpressApp.DC;
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using System.Collections.Generic;
using DevExpress.ExpressApp.Model;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Base.General;
using DevExpress.Persistent.Validation;
using Tida.Module.BusinessObjects.系统管理;

namespace Tida.Module.BusinessObjects.组织架构
{
    [NavigationItem("组织架构")]
    [XafDisplayName("部门信息")]
    [DefaultClassOptions]
    //[ImageName("BO_Contact")]
    //[DefaultProperty("DisplayMemberNameForLookupEditorsOfThisType")]
    //[DefaultListViewOptions(MasterDetailMode.ListViewOnly, false, NewItemRowPosition.None)]
    //[Persistent("DatabaseTableName")]
    // Specify more UI options using a declarative approach (https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument112701).

    [DefaultProperty("部门名称")]
    public class 部门 : BaseInf, ITreeNode
    { // Inherit from a different class to provide a custom primary key, concurrency and deletion behavior, etc. (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument113146.aspx).
        public 部门(Session session)
            : base(session)
        {
        }
        public override void AfterConstruction()
        {
            base.AfterConstruction();
            // Place your initialization code here (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112834.aspx).
        }

        // Fields...
        private string _天心会计编号;
        private Sys_User _负责领导;

        private 部门 _上级部门;
        private 公司 _公司;
        private string _部门编号;
        private string _部门名称;

        [Association("公司-部门")]
        public 公司 公司
        {
            get
            {
                return _公司;
            }
            set
            {
                SetPropertyValue("公司", ref _公司, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 部门名称
        {
            get
            {
                return _部门名称;
            }
            set
            {
                SetPropertyValue("部门名称", ref _部门名称, value);
            }
        }

        [Association("部门-部门")]
        public 部门 上级部门
        {
            get
            {
                return _上级部门;
            }
            set
            {
                SetPropertyValue("上级部门", ref _上级部门, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]

        public string 部门编号
        {
            get
            {
                return _部门编号;
            }
            set
            {
                SetPropertyValue("部门编号", ref _部门编号, value);
            }
        }
        [Association("部门-Sys_User")]
        public XPCollection<Sys_User> 员工
        {
            get
            {
                return GetCollection<Sys_User>("员工");
            }
        }

        [Association("部门-岗位")]
        public XPCollection<岗位> 岗位
        {
            get
            {
                return GetCollection<岗位>("岗位");
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 天心会计编号
        {
            get
            {
                return _天心会计编号;
            }
            set
            {
                SetPropertyValue("天心会计编号", ref _天心会计编号, value);
            }
        }
        [Association("部门-部门")]
        public XPCollection<部门> 下级部门列表
        {
            get
            {
                return GetCollection<部门>("下级部门列表");
            }
        }



        //    public 目录 上级;

        IBindingList ITreeNode.Children
        {
            get
            {
                return 下级部门列表;
            }
        }
        string ITreeNode.Name
        {
            get
            {
                return 部门名称;
            }
        }
        ITreeNode ITreeNode.Parent
        {
            get
            {
                return 上级部门;
            }
        }




        public Sys_User 负责领导
        {
            get
            {
                return _负责领导;
            }
            set
            {
                SetPropertyValue("负责领导", ref _负责领导, value);
            }
        }
    }
}